Cookie クッキー
パスワードなどユーザー自身がWebブラウザに入力した情報を一時的に保存
HTTP Hypertext Transfer ProtocolにおいてWebブラウザ Web BrowserとWebサーバ間で状態を管理するProtocol プロトコル
サーバアクセスするたびに自動送信される
Cookieを受け取ったサーバとは異なるWebサーバに対してはCookieを送らない
そこで用いられるWebブラウザ Web Browser上に保存された情報のこと
Webブラウザ Web Browserが個人のIDなどを保存し、最初のアクセス時にこのIdなどを一緒に送ることで、通信の手間が省ける
目的
HTTP Hypertext Transfer ProtocolがステートレスだけどCookieを使ってセッション Session web管理をすることで、擬似的に状態を維持可能に
仕組み
WebサーバからWebブラウザ Web BrowserへHTTPレスポンスのヘッダを利用して小さな情報を送る。
この情報は「名前=値」の組み合わせ
Cokkie: user=kiichi; pass=webtext;
毎回Webサーバに自動送信される
持続時間
Session cookie
セッション Session webが終了すると削除される。
再起動時に、セッション Session webを復元するブラウザもある。
Permanent cookies
指定された日付以降 or 指定期間後に削除される。
ブラウザが消す場合もある。
WebKit:
2019年4月 SafariのITP2.2
JavaScriptタグを用いたトラッキング目的のファーストパーティCookieの有効期限を24時間に制限
third-party scriptsで実行するタグ?を制限?
該当Appに直接埋め込んだthird-party scriptsがJSを実行して、Cookieを埋め込む場合のこと?
2020年3月Safari 13.1
全てのThird-Party Cookieを無効
2023年4月 Safari16.4
1st Party Cookieの場合であっても保持期間が最大7日間
WebサーバとJavaScriptタグの送信先であるタグサーバのIPアドレスのレンジが一定以上異なる場合
Cookieを発行したWebサーバと送信先のサーバのあて先が異なる
https://www.auriq.co.jp/blog/gdpr-analytics-1stparty-cookies/
歴史や具体対処が分かりやすかった
欠点
セッションIDの固定化攻撃に弱い
保持できる値の数や数や文字列長に限りあり
利用者本人が参照・変更できる
秘密情報の確保に向かない
これから
Third-Party Cookieの扱いが厳しくなってる
Safariなら、cookie、localStorageなど7日の上限
Full Third-Party Cookie Blocking and More | WebKit
2020-03-31のJS: TypeScript 3.9 Beta、Safari 13.1、CS Web Securityコース - JSer.info
そもそも、なぜ脱Cookie化する動きが出てるの?
Privacy Sandboxに変わっていくっぽい
Cookieとセッションをちゃんと理解する - Qiita
Cookieとセッション管理 - Qiita
4歳娘「パパ、セッションとCookieってなあに?」 - Qiita
最新のブラウザで変わるCookieの取り扱いやPrivacyの考え方 - Speaker Deck